package com.tyut.anno;

import com.tyut.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;


@Documented//元注解，标识State，可以抽取到帮助文档中
//Target元注解，标识State注解可以使用在哪些地方（方法、字段、注解类型、构造方法等等地方）
@Target({ElementType.FIELD})
//@Retention注解指定了该注解在编译、类加载和运行时的状态，参数值为RUNTIME表示该注解在运行时仍然保留。
@Retention(RetentionPolicy.RUNTIME)
//指定为这个注解提供校验规则的类为”StateValidation“
@Constraint(validatedBy = { StateValidation.class})
public @interface State {
	//提供校验失败后的提示信息
	String message() default "state参数的值只能是已发布或草稿";
	//指定分组
	Class<?>[] groups() default {};
	//负载  获取到State注解的附加信息，一般用不到
	Class<? extends Payload>[] payload() default {};
}
